/**
 * WBSページオブジェクト
 */
if( typeof(App.ProjectListCalendar) == "undefined" ){

App.ProjectListCalendar = function(initparam){
    // スーパークラスコンストラクタ呼び出し
    App.ProjectListCalendar.superclass.constructor.call(this);
    
    this.fncSetInitParameter( initparam );
};

var _list_calendar = {
    /*
     * properties
     */

    initparam      : {},         // 初期化パラメータ
    dataparam      : {},         // データパラメータ
    resizetimer    : null,

    /*
     * Event handlers
     */

    /**
     * onDocLoaded
     * ページ初期化
     */
    onDocLoaded : function(eventObject, target)
    {
        // スーパークラスの処理を実行
        App.ProjectListCalendar.superclass.onDocLoaded.call(this, eventObject, target);

        this.fncRender();// ページレンダリング
        this.fncSetEvent();// 各イベント設定
    },

    /**
     * onBarDblClick
     */
    
    onDblClickBar : function(e)
    {
        var target = e.getTarget();
    
        var divbodyelm  = Ext.get(target);
        var divelm      = divbodyelm.findParent('.list_calendar_items');
        var projectcomp = Ext.util.JSON.decode(divelm.getAttribute('data'));
        this.fncSetListObj(projectcomp);
        
        var task_kbn = projectcomp.task_kbn;
    
        var elm = null;
        if (task_kbn != null) {
            switch( eval(task_kbn) ){
                case 1 :
                    this.onClickEditTask(divelm);
                    break ;
                case 2 :
                    this.onClickEditMilestone(divelm);
                    break ;
                case 3 :
                    this.onClickEditEvent(divelm);
                    break ;
                default :
                    break ;
            }
        }    
    },

    onChangeTaskKbn : function(cmp, new_value, old_value)
    {
        this.fncFilterCalendarItem();
    },

    onChangeClientUser : function(cmp, new_value, old_value)
    {
        this.fncFilterCalendarItem();
    },

    /*
     * Functions
     */

    /*
     * 関数名：fncSetInitParameter
     * 概　要：初期化パラメータをセットする
     * 引　数：なし
     * 戻り値：なし
     */
    fncSetInitParameter: function(initparam)
    {
        if( initparam != null){
            this.initparam = initparam;
        }
        // initparamの内容で、メンバー値を初期化
        var keys = '';
        for (key in this.initparam) {
            var test = this.initparam[key];
            keys += (key == '') ? '' : ',';
            keys += key;
        }
        if( keys != "" ){
            var keysarr = keys.split(',') ;
            for( i in keysarr ){
                this[keysarr[i]] = this.initparam[keysarr[i]] ;
            }
        }
    },
    /**
     * fncSetEvent
     * 当該ページのイベントハンドラを設定する
     */
    fncSetEvent : function()
    {
        // タスク区分変更ハンドラ
        var elm = Ext.getCmp('calendar_filter_task_kbn');
        if (elm) {
            elm.on('change', this.onChangeTaskKbn, this, true);
        }
        var elm = Ext.getCmp('calendar_filter_client_user_id');
        if (elm) {
            elm.on('change', this.onChangeClientUser, this, true);
        }
        
        // タスク追加ボタンクリックイベント設定
        Ext.get('list_calendar_btn_add_task').on('click', this.onNewTaskClick, this, true);
        // イルストーンボタンクリックイベント設定
        Ext.get('list_calendar_btn_add_milestone').on('click', this.onNewMilestoneClick, this, true);
        // イベントボタンクリックイベント設定
        Ext.get('list_calendar_btn_add_event').on('click', this.onNewEventClick, this, true);
    },

    /*========================================================
     * 関数名：onNewTaskClick
     * 概　要：タスク追加リンククリックイベント
     *         タスク追加ダイアログを表示する。
     * 引　数：なし
     * 戻り値：なし
     ========================================================*/
    onNewTaskClick : function(target_url){
        try{
            this.fncSetListObj(null) ;
        
            // パラメータハッシュ生成
            var initparam = {};
        
            // アニメーション元エレメントIDの設定（指定しなくてもよい）
            initparam["base_id"] = "pro_list_calendar_body" ;
            
            // データパラメータの設定
            var project_id = this.fncSelectedProjectIdGet() ;
            initparam["dataparam"] = {};
            initparam["dataparam"]["id"] = "";
            initparam["dataparam"]["project_id"]  = project_id ;
            initparam["dataparam"]["base_id"]     = Ext.get('base_id').dom.value ;
            initparam["dataparam"]["class_word1"] = Ext.get('class_word1').dom.value ;
            initparam["dataparam"]["class_word2"] = Ext.get('class_word2').dom.value ;
            initparam["dataparam"]["class_word3"] = Ext.get('class_word3').dom.value ;
        
            // コールバックの設定（指定しなくてもよい）
          initparam["on_save"] = [this.onTaskSave_callback.createDelegate(this)];
          initparam["on_close"] = [this.onTaskClose_callback.createDelegate(this)];
    
            // タスク追加ダイアログ表示
            this.dialogs.TaskDlgIndex.fncShowDialog(initparam) ;

/*
            initparam["callback"] = $H( { on_save : [ this.onTaskSave_callback.createDelegate(this) ],
                                          on_close : [ this.onTaskClose_callback.createDelegate(this) ] } ) ;
    
            // タスク追加ダイアログ表示
            dlgTskEdit.fncShowDialog(initparam) ;
*/
        }
        catch(e){
        }
     },

    /**
     * onClickEditTask
     */
    onClickEditTask : function(elm)
    {
        try{
            // パラメータハッシュ生成
            var initparam = {};
        
            // アニメーション元エレメントIDの設定（指定しなくてもよい）
            initparam["base_id"] = elm.id ;
            
            // データパラメータの設定
            var project_id = this.fncSelectedProjectIdGet() ;
            initparam["dataparam"] = {};
            initparam["dataparam"]["id"]          = Ext.get('base_id').dom.value ;
            initparam["dataparam"]["project_id"]  = project_id ;
            initparam["dataparam"]["base_id"]     = "";
            initparam["dataparam"]["class_word1"] = Ext.get('class_word1').dom.value ;
            initparam["dataparam"]["class_word2"] = Ext.get('class_word2').dom.value ;
            initparam["dataparam"]["class_word3"] = Ext.get('class_word3').dom.value ;
        
            // コールバックの設定（指定しなくてもよい）
            initparam["on_save"]    = [this.onTaskSave_callback.createDelegate(this)];
            initparam["on_destroy"] = [this.onTaskDestroy_callback.createDelegate(this)];
            initparam["on_close"]   = [this.onTaskClose_callback.createDelegate(this)];
    
            // タスク追加ダイアログ表示
            this.dialogs.TaskDlgIndex.fncShowDialog(initparam) ;
//            dlgTskEdit.fncShowDialog(initparam) ;
        }
        catch(e){
        }
    },

    /*========================================================
     * 関数名：onTaskSave_callback
     * 概　要：タスク保存完了イベント
     *         リストのリロードを実施する。
     * 引　数：なし
     * 戻り値：なし
     ========================================================*/
    onTaskSave_callback : function(){
        // プロジェクトリストをリロード
        this.fncListLoad() ;
    },

    /*========================================================
     * 関数名：onTaskDestroy_callback
     * 概　要：タスク削除完了イベント
     *         リストのリロードを実施する。
     * 引　数：なし
     * 戻り値：なし
     ========================================================*/
    onTaskDestroy_callback : function(){
        // プロジェクトリストをリロード
        this.fncListLoad() ;
    },
    
    /*========================================================
     * 関数名：onTaskClose_callback
     * 概　要：タスクダイアログクローズイベント
     *         ダイアログを閉じた場合の後処理を実施する。
     * 引　数：なし
     * 戻り値：なし
     ========================================================*/
    onTaskClose_callback : function(){
    },

    /*========================================================
     * 関数名：onNewMilestoneClick
     * 概　要：マイルストーン追加リンククリックイベント
     *         マイルストーン追加ダイアログを表示する。
     * 引　数：なし
     * 戻り値：なし
     ========================================================*/
    onNewMilestoneClick : function(){
        try{
            this.fncSetListObj(null) ;
        
            // パラメータハッシュ生成
            var initparam = {};
        
            // アニメーション元エレメントIDの設定（指定しなくてもよい）
            initparam["base_id"] = "pro_list_calendar_body" ;
            
            // データパラメータの設定
            var project_id = this.fncSelectedProjectIdGet() ;
            initparam["dataparam"] = {};
            initparam["dataparam"]["id"]          = "";
            initparam["dataparam"]["project_id"]  = project_id ;
            initparam["dataparam"]["base_id"]     = Ext.get('base_id').dom.value ;
            initparam["dataparam"]["class_word1"] = Ext.get('class_word1').dom.value ;
            initparam["dataparam"]["class_word2"] = Ext.get('class_word2').dom.value ;
            initparam["dataparam"]["class_word3"] = Ext.get('class_word3').dom.value ;

            // コールバックの設定（指定しなくてもよい）
          initparam["on_save"]  = [this.onMilestoneSave_callback.createDelegate(this)];
          initparam["on_close"] = [this.onMilestoneClose_callback.createDelegate(this)];

            // タスク追加ダイアログ表示
            this.dialogs.MilestoneDlgIndex.fncShowDialog(initparam) ;
        }
        catch(e){
            alert(e.message) ;
        }
    },

    /**
     * onClickEditMilestone
     */
    onClickEditMilestone : function(div)
    {
        try{
            // パラメータハッシュ生成
            var initparam = {};
        
            // アニメーション元エレメントIDの設定（指定しなくてもよい）
            initparam["base_id"] = elm.id ;
            
            // データパラメータの設定
            var project_id = this.fncSelectedProjectIdGet() ;
            initparam["dataparam"] = {};
            initparam["dataparam"]["id"]          = Ext.get('base_id').dom.value ;
            initparam["dataparam"]["project_id"]  = project_id ;
            initparam["dataparam"]["base_id"]     = "";
            initparam["dataparam"]["class_word1"] = Ext.get('class_word1').dom.value ;
            initparam["dataparam"]["class_word2"] = Ext.get('class_word2').dom.value ;
            initparam["dataparam"]["class_word3"] = Ext.get('class_word3').dom.value ;

            // コールバックの設定（指定しなくてもよい）
          initparam["on_save"]    = [this.onMilestoneSave_callback.createDelegate(this)];
          initparam["on_destroy"] = [this.onMilestoneDestroy_callback.createDelegate(this)];
          initparam["on_close"]   = [this.onMilestoneClose_callback.createDelegate(this)];

            // タスク追加ダイアログ表示
            this.dialogs.MilestoneDlgIndex.fncShowDialog(initparam) ;

/*
            // コールバックの設定（指定しなくてもよい）
            initparam["callback"] = $H( { on_save : [this.onMilestoneSave_callback.createDelegate(this)],
                                          on_destroy : [this.onMilestoneDestroy_callback.createDelegate(this)],
                                          on_close : [this.onMilestoneClose_callback.createDelegate(this)] } ) ;
    
            // タスク追加ダイアログ表示
            dlgMilEdit.fncShowDialog(initparam) ;
*/
        }
        catch(e){
        }
    },

    /*========================================================
     * 関数名：onMilestoneSave_callback
     * 概　要：マイルストーン保存完了イベント
     *         リストのリロードを実施する。
     * 引　数：なし
     * 戻り値：なし
     ========================================================*/
    onMilestoneSave_callback : function(){
        // プロジェクトリストをリロード
        this.fncListLoad() ;
    },
    
    /*========================================================
     * 関数名：onMilestoneDestroy_callback
     * 概　要：マイルストーン削除完了イベント
     *         リストのリロードを実施する。
     * 引　数：なし
     * 戻り値：なし
     ========================================================*/
    onMilestoneDestroy_callback : function(){
        // プロジェクトリストをリロード
        this.fncListLoad() ;
    },

    /*========================================================
     * 関数名：onMilestoneClose_callback
     * 概　要：マイルストーンダイアログクローズイベント
     *         ダイアログを閉じた場合の後処理を実施する。
     * 引　数：なし
     * 戻り値：なし
     ========================================================*/
    onMilestoneClose_callback : function(){
    },

    /*========================================================
     * 関数名：onNewEventClick
     * 概　要：イベント追加リンククリックイベント
     *         イベント追加ダイアログを表示する。
     * 引　数：なし
     * 戻り値：なし
     ========================================================*/
    onNewEventClick : function(target_url){
        try{
            this.fncSetListObj(null) ;
        
            // パラメータハッシュ生成
            var initparam = {};
        
            // アニメーション元エレメントIDの設定（指定しなくてもよい）
            initparam["base_id"] = "pro_list_calendar_body" ;
            
            // データパラメータの設定
            var project_id = this.fncSelectedProjectIdGet() ;
            initparam["dataparam"] = {};
            initparam["dataparam"]["id"] = "";
            initparam["dataparam"]["project_id"]  = project_id ;
            initparam["dataparam"]["base_id"]     = Ext.get('base_id').dom.value ;
            initparam["dataparam"]["class_word1"] = Ext.get('class_word1').dom.value ;
            initparam["dataparam"]["class_word2"] = Ext.get('class_word2').dom.value ;
            initparam["dataparam"]["class_word3"] = Ext.get('class_word3').dom.value ;

            // コールバックの設定（指定しなくてもよい）
          initparam["on_save"]  = [this.onEventSave_callback.createDelegate(this)];
          initparam["on_close"] = [this.onEventClose_callback.createDelegate(this)];
    
            // タスク追加ダイアログ表示
            this.dialogs.EventDlgIndex.fncShowDialog(initparam) ;

/*        
            // コールバックの設定（指定しなくてもよい）
            initparam["callback"] = $H( { on_save : [this.onEventSave_callback.createDelegate(this)],
                                          on_close : [this.onEventClose_callback.createDelegate(this)] } ) ;
    
            // タスク追加ダイアログ表示
            dlgEvtEdit.fncShowDialog(initparam) ;
*/
        }
        catch(e){
        }
    },

    /**
     * onClickEditEvent
     */
    onClickEditEvent : function(div)
    {
        try{
            // パラメータハッシュ生成
            var initparam = {};
        
            // アニメーション元エレメントIDの設定（指定しなくてもよい）
            initparam["base_id"] = elm.id ;
            
            // データパラメータの設定
            var project_id = this.fncSelectedProjectIdGet() ;
            initparam["dataparam"] = {};
            initparam["dataparam"]["id"]          = Ext.get('base_id').dom.value ;
            initparam["dataparam"]["project_id"]  = project_id ;
            initparam["dataparam"]["base_id"]     = "";
            initparam["dataparam"]["class_word1"] = Ext.get('class_word1').dom.value ;
            initparam["dataparam"]["class_word2"] = Ext.get('class_word2').dom.value ;
            initparam["dataparam"]["class_word3"] = Ext.get('class_word3').dom.value ;

            // コールバックの設定（指定しなくてもよい）
          initparam["on_save"]    = [this.onEventSave_callback.createDelegate(this)];
          initparam["on_destroy"] = [this.onEventDestroy_callback.createDelegate(this)];
          initparam["on_close"]   = [this.onEventClose_callback.createDelegate(this)];

            // タスク追加ダイアログ表示
            this.dialogs.EventDlgIndex.fncShowDialog(initparam) ;

/*        
            // コールバックの設定（指定しなくてもよい）
            initparam["callback"] = $H( { on_save : [this.onEventSave_callback.createDelegate(this)],
                                          on_destroy : [this.onEventDestroy_callback.createDelegate(this)],
                                          on_close : [this.onEventClose_callback.createDelegate(this)] } ) ;
    
            // タスク追加ダイアログ表示
            dlgEvtEdit.fncShowDialog(initparam) ;
*/
        }
        catch(e){
        }
    },

    /*========================================================
     * 関数名：onEventSave_callback
     * 概　要：イベント保存完了イベント
     *         リストのリロードを実施する。
     * 引　数：なし
     * 戻り値：なし
     ========================================================*/
    onEventSave_callback :  function(){
        // プロジェクトリストをリロード
        this.fncListLoad() ;
    },

    /*========================================================
     * 関数名：onEventDestroy_callback
     * 概　要：イベント削除完了イベント
     *         リストのリロードを実施する。
     * 引　数：なし
     * 戻り値：なし
     ========================================================*/
    onEventDestroy_callback : function(){
        // プロジェクトリストをリロード
        this.fncListLoad() ;
    },
    
    /*========================================================
     * 関数名：onEventClose_callback
     * 概　要：イベントダイアログクローズイベント
     *         ダイアログを閉じた場合の後処理を実施する。
     * 引　数：なし
     * 戻り値：なし
     ========================================================*/
    onEventClose_callback : function(){
    },  

    /*
     * 関数名：fncSelectedProjectIdGet
     * 概　要：プロジェクト選択プルダウンでの
     *         現在選択されているプロジェクトのIDを取得する
     * 引　数：なし
     * 戻り値：string       プロジェクトID
     */
    fncSelectedProjectIdGet : function(){
        return Ext.get('remote_project_id').dom.value ;
    },

    /**
     * fncListData
     * リストの更新
     * 単純にページのリロード
     */
    fncListLoad : function(){
        var elm = Ext.get('remote_project_id') ;
        location.href = url_for("/project/calendar/" + elm.getValue() ) ;
    },

    /**
     * fncRender
     * ページレンダリング
     */
    fncRender : function()
    {
        this.layoutControll();
        
        Ext.QuickTips.init();
        Ext.QuickTips.enable();

        var wrapper        = Ext.get("calendar_wrapper") ;
        var wrapper_child  = Ext.get("calendar_wrapper_child") ;
        var calendar_table = Ext.get("calendar_table") ;
        
        var _days = Ext.query('.list_calendar_cell');
        var days  = [];
        Ext.each(_days, function(e) {
            var date = e.id.replace('cell_', '');
            if (date) {
                days.push({date: date, index: 0, items: []});
            }
        });

        var items = Ext.query('.list_calendar_items');
        var len   = items.length;
        for (var i=0; i<len; i++) {
            var projectcomp = Ext.util.JSON.decode(items[i].getAttribute('data'));

            var sdatestr = items[i].getAttribute('sdate');
            var edatestr = items[i].getAttribute('edate');

            var sdate = Date.parseDate(sdatestr, "Y-m-d");
            var edate = Date.parseDate(edatestr, "Y-m-d");

            var sarea = Ext.get("area_"+sdatestr) ;
            var earea = Ext.get("area_"+edatestr) ;
            if( sarea == null || earea == null ) continue ;
            sarea.dom.innerHTML += (sarea.dom.innerHTML != "" ? "" : "" ) + '<div style="visibility:hidden;margin-top:1px;margin-bottom:1px;height:22px;" id="items_'+i+'">' + projectcomp.item_name + '</div>' ;
        }

        for (var i=0; i<len; i++) {
            var projectcomp = Ext.util.JSON.decode(items[i].getAttribute('data')) ;

            var sdatestr = items[i].getAttribute('sdate');
            var edatestr = items[i].getAttribute('edate');

            var sdate = Date.parseDate(sdatestr, "Y-m-d");
            var edate = Date.parseDate(edatestr, "Y-m-d");

            var sarea = Ext.get("area_"+sdatestr) ;
            var earea = Ext.get("area_"+edatestr) ;
            if( sarea == null || earea == null ) continue ;
            var baseelm = Ext.get("items_"+i) ;

            var divelm = Ext.get(items[i]) ;
            Ext.DomHelper.applyStyles( divelm, {display:"block"}) ;
            
            
            var view_index = 0;
            Ext.each(days, function(date_item, k) {
                var date = Date.parseDate(date_item.date, "Y-m-d");
                if (date >= sdate && date <= edate) {
                    if (date.format('Y-m-d') == sdate.format('Y-m-d')) {
                        var date_index = days[k].index;
                        days[k].items.push(projectcomp);
                        view_index = (view_index < date_index) ? date_index : view_index;
                        view_index = view_index - days[k].items.length + 1;
                    }
                    days[k].index++;
                }
            });
            
            var _x = baseelm.getX() - divelm.getX();
            var _y = baseelm.getY() - divelm.getY() + (view_index * 22);
            var _w = earea.getX() - sarea.getX() + earea.getWidth();
            Ext.DomHelper.applyStyles( divelm, {left: _x, top: _y, width: _w});

            var tipstext = "" ;
            if( projectcomp.task_kbn == 1 ){
                var tipstext = String.format('<span style="font-weight:bold;">{0}</span><br>{1}～{2}', projectcomp.item_name, sdate.format('Y-m-d'), edate.format('Y-m-d') ) ;
            }
            else if( projectcomp.task_kbn == 2 ){
                var tipstext = String.format('<span style="font-weight:bold;">{0}</span><br>{1}', projectcomp.item_name, sdate.format('Y-m-d') ) ;
            }
            else if( projectcomp.task_kbn == 3 ){
                var tipstext = String.format('<span style="font-weight:bold;">{0}</span>', projectcomp.item_name ) ;
            }
            var divbody = divelm.child('.list_calendar_items_body') ;
            Ext.QuickTips.register({target:divbody, text:tipstext}) ;

            divelm.addListener("dblclick", this.onDblClickBar, this );
        }
/*
        //2008/07/16 add kawazoeカレンダーのスクロールバーを表示しないとき曜日行の右端の隙間を埋める要素を非表示にする
        if(calendar_table.getHeight()<= 400){
          var margin = document.getElementById("margin");
          margin.innerHTML = "";
          Ext.DomHelper.applyStyles( margin, {display:"none"});
        }
            
        //Ext.DomHelper.applyStyles(wrapper_child, {height:calendar_table.getHeight()});
        if(Ext.isIE){
            //Ext.DomHelper.applyStyles(wrapper_child, {overflow:"hidden"});
        }
*/
        
    },

    /**
     * fncFilterCalendarItem
     * カレンダーのアイテムにフィルターをかける
     */
    fncFilterCalendarItem : function()
    {
        var task_value = Ext.getCmp('calendar_filter_task_kbn').getValue();
        var user_value = Ext.getCmp('calendar_filter_client_user_id').getValue();
        
        var items          = Ext.query('.list_calendar_items');
        var wrapper        = Ext.get("calendar_wrapper");
        var wrapper_child  = Ext.get("calendar_wrapper_child");
        var calendar_table = Ext.get("calendar_table");
        
        var json = Ext.util.JSON;
        
        var _days = Ext.query('.list_calendar_cell');
        var days  = [];
        Ext.each(_days, function(e) {
            var date = e.id.replace('cell_', '');
            if (date) {
                days.push({date: date, index: 0, items: []});
            }
        });
        
        var i= 0;
        var view_index = 0;
        var week_index = {};
        Ext.each(items, function(item) {
            var e    = Ext.get('items_' + i);
            var item = Ext.get(item);
            var projectcomp = json.decode(item.dom.getAttribute('data'));

            if (e) {
                var disp = true;
                var user_list = json.decode(item.dom.getAttribute('userids'));
                var task_kbn  = parseInt(projectcomp.task_kbn);

                if (task_value && user_value) {
                    disp = (user_list.indexOf(user_value) >= 0 && (task_value == task_kbn))
                           ? true : false;
                } else if (user_value) {
                    disp = (user_list.indexOf(user_value) >= 0) ? true : false;
                } else if (task_value) {
                    disp = (task_value == task_kbn) ? true : false;
                }
                e.setDisplayed(disp);
                e.setXY([0, 0]);
                item.setDisplayed(false);
                var sdatestr = item.dom.getAttribute('sdate');
                var edatestr = item.dom.getAttribute('edate');

                var sdate = Date.parseDate(sdatestr, "Y-m-d");
                var edate = Date.parseDate(edatestr, "Y-m-d");
                
                var sarea = Ext.get("area_"+sdatestr) ;
                var earea = Ext.get("area_"+edatestr) ;
                if (sarea && earea) {
                    var view_index = week_index[sdate.format('w')] || 0;
                    if (disp != false) {
                        var add_y = (task_value == 2) ? 22 * 2 : 0;
                        var _x = e.getX();// - item.getX();
                        var _y = e.getY();// + (view_index * 22);// - item.getY();
                        var _w = earea.getX() - sarea.getX() + earea.getWidth();
                        
                        item.setXY([_x, _y]);
                        item.setWidth(_w);
                        item.setDisplayed(true);
                    }
                }
                prev_disp = disp;
            }
            i++;
        });
    },



    /**
     * fncSetListObj
     */
    fncSetListObj : function(projectcomp)
    {
        var elm = null;
        if (projectcomp != null) {
            var id = projectcomp.id;
            var class_word1 = projectcomp.class_word1;
            var class_word2 = projectcomp.class_word2;
            var class_word3 = projectcomp.class_word3;
    
            Ext.get('base_id').dom.value     = (id == null) ? '' : id;
            Ext.get('class_word1').dom.value = (class_word1 == null) ? '' : class_word1;
            Ext.get('class_word2').dom.value = (class_word2 == null) ? '' : class_word2;
            Ext.get('class_word3').dom.value = (class_word3 == null) ? '' : class_word3;
        } else {
            Ext.get('base_id').dom.value     = '';
            Ext.get('class_word1').dom.value = '';
            Ext.get('class_word2').dom.value = '';
            Ext.get('class_word3').dom.value = '';
        }
    },


    layoutControll : function()
    {
        var body = Ext.get(document.body);
        //body.setStyle('overflow-y', 'scroll');
        var body_height = body.getHeight();
        var calendar = Ext.get('calendar_wrapper_child');
        var calendar_top = calendar.getY();
        
        var calendar_height = body_height - calendar_top - 20;
        calendar_height = Math.floor(calendar_height);
        
        calendar.setHeight(calendar_height);
        //calendar.setStyle('overflow-y', 'scroll');
    }

};

// App.Page継承
Ext.extend(App.ProjectListCalendar, App.Page, _list_calendar);

// 現在のページオブジェクトとして生成
App.Page.thispage = new App.ProjectListCalendar() ;
}